/*********************************************************************************************************
 *
 *	模块名称 :cat命令执行模块
 *	文件名称 :Cat_Command.c
 *	版    本 : V1.0
 *	说    明 :本模块在用户输入cat指令后开始执行。
 *
 *              注意事项：
 *                务必将编辑器的缩进参数和TAB设置为4来阅读本文件，以使得代码显示整齐。
 *
 *	修改记录 :
 *		版本号       日期         作者        说明
 *		V1.0     2022-05-09     zrx
 *
 *	Copyright (C), 2022-2030, xxxx
 *
 *********************************************************************************************************/
#include "../include/Cat_Command.h"

/*********************************************************************************************************
 *	函 数 名:Cat_Command
 *	功能说明:执行cat命令。
 *	形    参:string pointer array User content
 *  全局变量:无
 *	返 回 值:success 0    false -1
 *********************************************************************************************************/

int Cat_Command(char *abuf[20])
{
    for (size_t i = 1; i < 20 && abuf[i]; i++)
    {
        puts(abuf[i]);
        FILE *fp = fopen(abuf[i], "r");
        if (fp == NULL)
        {
            perror("cat fail\n");
            return -1;
        }
        while (1)
        {
            char *cbuf = (char *)calloc(1, 1024); //创建读取内容的缓冲区
            int frret = fread(cbuf, 1, 1024, fp);
            if (!frret)
            {
                break;
            }
            fwrite(cbuf, 1, frret, stdout);
            free(cbuf);
            cbuf = NULL;
        }
        puts("");

        fclose(fp);
    }
    return 0;
}